package com.bestcem.xm.award.dao.mapper;

import com.bestcem.xm.award.entity.mysql.AwardWinEntity;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.List;

/**
 * 抽奖兑奖码表Mapper
 *
 * @author hang.li <hang.li@idiaoyan.com>
 * @version v1.0
 * @date 2021/9/15 17:18
 */
@Mapper
public interface AwardWinMapper {

    /**
     * 根据奖励id设置兑奖码状态
     *
     * @param awardId 奖励id
     * @param used    是否被使用
     * @param updateTime 修改时间
     * @return 影响行数
     */
    long updateUsedByAwardId(@Param("awardId") String awardId, @Param("used") Boolean used, Date updateTime);

    /**
     * 根据奖励id批量删除兑奖码
     *
     * @param awardId 奖励id
     * @return 删除行数
     */
    long deleteByAwardId(@Param("awardId") String awardId);

    /**
     * 批量插入兑奖码数据
     *
     * @param awardWins 兑奖码List
     * @return 插入行数
     */
    long insertMany(List<AwardWinEntity> awardWins);

    /**
     * 根据id查询兑奖码数据
     *
     * @param winId 兑奖码id
     * @return AwardWinEntity
     */
    AwardWinEntity findById(String winId);

    /**
     * 根据奖励id查询兑奖码列表
     *
     * @param awardId 奖励id
     * @return 兑奖码列表
     */
    List<AwardWinEntity> findListByAwardId(String awardId);

    /**
     * 根据奖励id,奖项名称,使用状态获取兑奖码信息
     *
     * @param awardId 奖励id
     * @param name    奖项名称
     * @param used    是否被使用
     * @return 兑奖码信息
     */
    AwardWinEntity findWinByIdAndNameAndUsed(String awardId, String name, Boolean used);

    /**
     * 根据抽奖兑奖码id修改兑奖码使用状态
     *
     * @param winId      抽奖兑奖码id
     * @param used       是否使用
     * @param updateTime 修改时间
     * @return 修改条数
     */
    int updateUsedByAwardWinId(String winId, Boolean used, Date updateTime);
}